import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store/index";
import '@/permission'

// 引入mock文件
import "@/mock/index.js"

//全局初始化样式
import 'normalize.css/normalize.css'

// 全局引入font-awesome
import 'font-awesome/css/font-awesome.css';

//elementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

// 解决侧边导航折叠以后文字无法隐藏的问题
// 出现这个问题的主要原因是在根据数据递归显示侧边栏的时候使用了v-for循环，v-for会形成不确定的并列标签，所以
// 外边人为嵌套了div，但是el-menu本身希望里边嵌套的是el-menu-item,el-submenu,el-menu-item-group其中之一,
// 所以出现了折叠以后文字没有隐藏的问题，此时利用fragment这个库可以完美解决这个问题，只需要下载引入，替换div即可
import Fragment from 'vue-fragment'
Vue.use(Fragment.Plugin)

//全局公共样式
import './common/css/global.less'

//全局信息提示
import DonMessage from "./common/scripts/message";
Vue.prototype.$message = DonMessage;

//API
import api from "./api/index";
Vue.prototype.$api = api;

//全局方法
import utils from "@/utils/index.js"
Vue.prototype.$utils = utils;

// import echarts from 'echarts'
// Vue.prototype.$echarts = echarts


// 树状结构插件
import Vue2OrgTree from 'vue2-org-tree'
Vue.use(Vue2OrgTree)

//封装的Toast组件 通过this调用
import Toast from './components/toast/toast';
Vue.use(Toast);

//封装的messagebox组件 通过this调用
import MessageBox from './components/messageBox/messageBox';
Vue.use(MessageBox);

import Alert from './components/Alert/Alert.js'
Vue.use(Alert);

// 最后要在main.js中引入，表示使用之，这样在任意组件中都可以执行对应方法了
import './components/loading/index'

Vue.config.productionTip = false

import cmDirectives from 'cm-directives'
Vue.use(cmDirectives)

// 自定义指令
import Directives from './directives'
Vue.use(Directives)

// 全局过滤器
import * as filters from './filters/filter'
Object.keys(filters.default).forEach((item) => {
  Vue.filter(item, filters.default[item])
})

import htmlToPdf from "./utils/htmlToPdf";
Vue.use(htmlToPdf);

import VueAMap from "vue-amap";
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
  key: "ec69df07c75feb18aabc8a62144e486e",
  plugin: [
    "AMap.Scale", // 右下角缩略图插件 比例尺
    "AMap.OverView", // 地图鹰眼插件
    "AMap.ToolBar", // 地图工具条
    "AMap.MapType", // 类别切换控件，实现默认图层与卫星图、实施交通图层之间切换的控制
    "AMap.PolyEditor", // 编辑 折线多边形
    "AMap.CircleEditor", // 圆形编辑器插件
    "AMap.Geocoder"
  ],
  // 默认高德 sdk 版本为 1.4.4
  v: "1.4.4",
  uiVersion: "1.1"
});

Vue.use(ElementUI)

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");
